package cn.jja8.networkTransmission;

import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 数据服务框架
 * */
public class DataServices {
    public interface WhenConnected {
        /**
         * 当有新的连接时
         * */
        void 连接(DataClient 连接);
    }
    WhenConnected b事件执行器;
    ServerSocket serverSocket;
    /**
     * 在指定端口上提供服务
     * */
    public DataServices(InetAddress 监听地址, int 端口, WhenConnected 事件执行器, int 请求最大队列长度) throws IOException {
        this.b事件执行器 = 事件执行器;
        serverSocket = new ServerSocket(端口,请求最大队列长度,监听地址);
        new Thread(() -> {
            while (true){
                try {
                    Socket socket = serverSocket.accept();
                    System.out.println("客户端连接");
                    if (事件执行器!=null){
                        DataClient 连接 = new DataClient(socket);
                        事件执行器.连接(连接);
                        连接.开始接收数据();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("客户端连接出错");
                    try { serverSocket.close(); } catch (IOException ignored) { }
                }
            }
        }).start();
    }

}
